package logica;

import datos.Bloque;
import java.awt.Color;
import java.awt.Component;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;
import presentacion.VentanaMapBuilder;

public class ControladorHerramientas {
    
    private VentanaMapBuilder vmb;
    private Image btnSelectBloque_Icon;
    private Bloque bloqueSeleccionado;
    private ElementoMapa elementoAPintar;
    
    public ControladorHerramientas(VentanaMapBuilder ventanaMapBuilder){
        this.vmb = ventanaMapBuilder;
    }
    
    public void SeleccionarBloque(){
        final List<ElementoMapa> bloqueList = new ArrayList<>();
        for (int i = 0; i < vmb.getCm().getEntidadBloqueList().size(); i++) {
            bloqueList.add(new ElementoMapa(vmb.getCm().getEntidadBloqueList().get(i), 0, (i * 32), 32));
            vmb.getPanelSelecBloque().add(bloqueList.get(i).getLabelImagen());
            vmb.getPanelSelecBloque().getComponent(i).addMouseListener(
                    new MouseAdapter() {
                        public void mouseClicked(MouseEvent me) {
                            JComponent comp = (JComponent) me.getComponent();
                            Component child = comp.findComponentAt(me.getPoint());
                            if (child instanceof JLabel) {
                                for (ElementoMapa elemento : bloqueList) {
                                    if (child == elemento.getLabelImagen()) {
                                        Image imagenEscalada = elemento.getImagenBloque().getScaledInstance(vmb.getSelecB_ImgBloque().getSize().width, vmb.getSelecB_ImgBloque().getSize().height, Image.SCALE_SMOOTH);
                                        vmb.getSelecB_txtNombre().setText(elemento.getBloque().getNombre());
                                        vmb.getSelecB_txtDesc().setText(elemento.getBloque().getDescripcion());
                                        String categoria = elemento.getBloque().getIdCategoria().getNombre();
                                        vmb.getSelecB_txtCateg().setText(categoria);
                                        vmb.setBtnSelectBloque_Icon(elemento.getImagenBloque().getScaledInstance(vmb.getSelecB_ImgBloque().getSize().width, vmb.getSelecB_ImgBloque().getSize().height, Image.SCALE_SMOOTH));
                                        vmb.getSelecB_ImgBloque().setIcon(new ImageIcon(imagenEscalada));
                                        bloqueSeleccionado = elemento.getBloque();
                                        elementoAPintar = elemento;
                                        vmb.getHerram_btnLapiz().setEnabled(true);
                                    }
                                }
                            }
                        }

                        public void mouseEntered(MouseEvent me) {
                            JComponent comp = (JComponent) me.getComponent();
                            Component child = comp.findComponentAt(me.getPoint());
                            JLabel childLabel = (JLabel) child;
                            if (child instanceof JLabel) {
                                childLabel.setBorder(new LineBorder(Color.white, 1));
                            }
                        }

                        public void mouseExited(MouseEvent me) {
                            for (int i = 0; i < vmb.getPanelSelecBloque().getComponentCount(); i++) {
                                JLabel childLabel = (JLabel) vmb.getPanelSelecBloque().getComponent(i);
                                childLabel.setBorder(null);
                            }
                        }
                    });
        }
    }
    
    public Image getBtnSelectBloque_Icon() {
        return btnSelectBloque_Icon;
    }

    public void setBtnSelectBloque_Icon(Image btnSelectBloque_Icon) {
        this.btnSelectBloque_Icon = btnSelectBloque_Icon;
    }

    public Bloque getBloqueSeleccionado() {
        return bloqueSeleccionado;
    }

    public void setBloqueSeleccionado(Bloque bloqueSeleccionado) {
        this.bloqueSeleccionado = bloqueSeleccionado;
    }

    public ElementoMapa getElementoAPintar() {
        return elementoAPintar;
    }

    public void setElementoAPintar(ElementoMapa elementoAPintar) {
        this.elementoAPintar = elementoAPintar;
    }

}
